Pairing users with social media communities

ABSTRACT

Systems and methods that integrate social media applications having social media communities of like-minded users with other applications, such as enterprise applications, are described herein. A user may join one or more of the social media communities based on a variety of factors, including applications the user uses or plans to use, user type (e.g., end-user, administrator, etc.), the user&#39;s level of expertise, and/or the type of activities that the user plans to perform in one or more applications. A user&#39;s actions within or using one or more applications may be monitored. In response to detecting performance of a monitored action, a description of the user&#39;s action may be published to other users in the social media community, the user may be paired with one or more social media communities, and/or recommendations for resources related to the detected action may be provided to the user. Recommendations may also be provided based on posts made by the user in the social media community.

FIELD

Aspects described herein relate to computer systems and integration ofsocial media applications with other applications. More specifically,aspects described herein relate to pairing users with social mediacommunities, monitoring users' activities in one or more applications,displaying users' activities in social media communities, generatingresource suggestions for users, and/or re-pairing users with socialmedia communities.

BACKGROUND

Social media applications have grown in popularity in recent years.Individuals that use the same social media application or interface,such as FACEBOOK®, may interact with one another by posting statusmessages or exchanging information. These posts may be made public toall members of the social media application or to a subset of themembers, such as a user's friends or acquaintances. On the other hand,enterprise, productivity, and other types of applications traditionallydo not have the flexibility of social media applications forcollaboration and sharing information to pertinent groups ofindividuals. Accordingly, there is an insufficient functional connectionbetween enterprise/productivity/other types of applications and socialmedia applications, and there exists an ever present need to improve theintegration among social media applications and other types ofapplications.

SUMMARY

In light of the foregoing background, the following presents asimplified summary of the present disclosure in order to provide a basicunderstanding of some aspects described herein. This summary is not anextensive overview, and is not intended to identify key or criticalelements or to delineate the scope of the claims. The following summarymerely presents various described aspects in a simplified form as aprelude to the more detailed description provided below.

In order to address the above shortcomings and additional benefits thatwill be realized upon reading the disclosure, aspects herein describe amethod, one or more non-transitory computer-readable media storingcomputer-readable instructions that, when executed by a computingdevice, cause the computing device to perform a method, and/or a devicecomprising a processor and memory storing computer-readable instructionsthat, when executed by the processor, cause the device to perform amethod.

In some embodiments, a method of pairing a user to a social mediacommunity may include initiating a monitoring client to monitor useractivity in an application and detecting, by the monitoring client, auser action taken in the application. The monitoring client may comprisea plug-in to the application. A computing device may determine a firstsocial media community corresponding to the detected user action,wherein the first social media community may be classified among aplurality of social media communities. The user may be paired with thefirst social media community corresponding to the detected user action.

In some aspects, detecting the user action may comprise determining thepresence of an identifier assigned to the user action, and determiningthe first social media community may comprise comparing the identifierto a data mapping table for the application, wherein the data mappingtable may be configured to correlate the identifier with the useraction. Additionally or alternatively, determining the first socialmedia community may comprise determining that the first social mediacommunity does not exist and in response to determining that the firstsocial media community does not exist, creating the first social mediacommunity. Furthermore, pairing the user with the first social mediacommunity may comprise pairing the user with the created first socialmedia community.

In some embodiments, the user may be paired with a second social mediacommunity different from the first social media community, and themethod may further comprise maintaining the user's pairing with thesecond social media community while pairing the user with the firstsocial media community. Additionally or alternatively, pairing the userwith the first social media community may comprise switching the userfrom a second social media community to the first social mediacommunity. The second social media community may be different from thefirst social media community. Furthermore, prior to pairing the userwith the first social media community, the method may further comprisegenerating a plurality of community pairing display windows configuredto navigate the user to join at least one of the plurality of socialmedia communities, receiving at least one selection of an application,application type, user type, user level, and activity type desired bythe user, determining the second social media community based on the atleast one selection, and pairing the user with the second social mediacommunity.

If the second social media community does not exist, the second socialmedia community may be created. Accordingly, pairing the user with thesecond social media community may comprise pairing the user with thecreated second social media community. Additionally or alternatively,receiving the at least one selection may comprise receiving at least twoselections of an application, application type, user type, user level,and activity type. In response to determining that the second socialmedia community does not exist, the user may be paired with a thirdsocial media community based on at least one of the user's selectionsmatching the third social media community and at least one of the user'sselections not matching the third social media community.

In some embodiments, a method of displaying user actions in a socialmedia community may comprise monitoring actions performed by a user inan application and in response to detecting a user action assigned apredefined identifier, retrieving, from a database, at least one keywordassociated with the predefined identifier. The method may furtherinclude initiating a monitoring client plug-in for the application, andthe monitoring step may be performed by the monitoring client plug-in. Acomputing device may generate a textual description of the user action,which may comprise the at least one keyword and an identifier for theuser. The textual description may be displayed in a discussion feedwindow of a social media community. The social media community maycomprise a plurality of users that have performed the user actionassigned the predefined identifier. Furthermore, the textual descriptionof the user action may comprise at least one of the following: the nameof the application and the time of the detected user action.Additionally, the textual description of the user action may comprise atleast one of the following: a link to request an online meeting with theuser and a link to send a private message to the user.

In some aspects, the method may include monitoring actions performed bythe user in a plurality of applications. These applications may includeat least one enterprise application. A plurality of actions performed bythe user in the plurality of applications may be displayed in adiscussion feed. The method may further comprise generating, by acomputing device, searches in one or more resources based on thepredefined identifier. Generating the searches may comprise generatingone or more search strings based on a plurality of keywords associatedwith the predefined identifier. The plurality of keywords may includethe keyword displayed in the textual description. Results of thesearches may be displayed in a window of the social media community.

In some embodiments, a method of generating suggestions based on useractivity in an application may comprise monitoring, by a computingdevice, keywords inputted for display in a discussion feed window of asocial media community. It may be determined that at least one of theinputted keywords corresponds to at least one application activitystored in a data mapping table. The method may further includegenerating searches in one or more resources based on the at least oneapplication activity. Generating the searches may comprise generatingone or more search strings based on a plurality of keywords associatedwith the at least one application activity. Additionally oralternatively, generating the searches may comprise searching at leastone indexed help page corresponding to the at least one applicationactivity. Results of the searches may be displayed in a window of thesocial media community.

These and other aspects will be readily apparent upon reading thedetailed description below.

BRIEF DESCRIPTION OF THE DRAWINGS

Having thus described aspects of the disclosure in general terms,reference will now be made to the accompanying drawings, which are notnecessarily drawn to scale, and wherein:

FIG. 1 illustrates an example operating environment in which variousaspects of the disclosure may be implemented.

FIG. 2 illustrates a device that may be used in accordance with one ormore illustrative aspects described herein.

FIG. 3 illustrates a device that may be used in accordance with one ormore illustrative aspects described herein.

FIG. 4 illustrates an example method of pairing a user with a socialmedia community in accordance with one or more illustrative aspectsdescribed herein.

FIG. 5 illustrates an example method of monitoring a user's activity inan application in accordance with one or more illustrative aspectsdescribed herein.

FIG. 6 illustrates an example method of generating textual descriptionsof user actions in accordance with one or more illustrative aspectsdescribed herein.

FIG. 7 illustrates an example method of searching resources forinformation based on user activity in an application in accordance withone or more illustrative aspects described herein.

FIG. 8 illustrates an example method of searching resources forinformation based on user discussion posts in accordance with one ormore illustrative aspects described herein.

FIG. 9 illustrates an example method of pairing a user with a socialmedia community based on user activity in accordance with one or moreillustrative aspects described herein.

FIG. 10 illustrates an example graphical user interface for initiating asocial media community in accordance with one or more illustrativeaspects described herein.

FIGS. 11-16 illustrate example graphical user interfaces for joining asocial media community in accordance with one or more illustrativeaspects described herein.

FIGS. 17 and 18 illustrate examples of monitoring user activity in oneor more applications in accordance with one or more illustrative aspectsdescribed herein.

FIG. 19 illustrates an example of generating a textual description ofuser activity or generating a search based on user activity inaccordance with one or more illustrative aspects described herein.

FIG. 20 illustrates an example graphical user interface of a discussionfeed in a social media community in accordance with one or moreillustrative aspects described herein.

FIG. 21 illustrates an example graphical user interface for displayinglinks in a discussion feed in accordance with one or more illustrativeaspects described herein.

FIG. 22 illustrates an example graphical user interface for creating aNetwork Interface Card (NIC) bond using an application in accordancewith one or more illustrative aspects described herein.

FIG. 23 illustrates an example graphical user interface for generatingan event log for the creation of a NIC bond in accordance with one ormore illustrative aspects described herein.

FIG. 24 illustrates an example graphical user interface for displayingcreation of a NIC bond in a social media discussion feed in accordancewith one or more illustrative aspects described herein.

FIG. 25 illustrates an example graphical user interface for displaying adiscussion feed in a social media application in accordance with one ormore illustrative aspects described herein.

FIG. 26 illustrates an example indexed resource in accordance with oneor more illustrative aspects described herein.

DETAILED DESCRIPTION

In the following description of the various embodiments, reference ismade to the accompanying drawings, which form a part hereof, and inwhich is shown by way of illustration various embodiments in whichaspects described herein may be practiced. It is to be understood thatother embodiments may be utilized and structural and functionalmodifications may be made without departing from the scope and spirit ofthe present disclosure.

As will be appreciated by one of skill in the art upon reading thefollowing disclosure, various aspects described herein may be embodiedas a method, a data processing system, or a computer program product.Accordingly, those aspects may take the form of an entirely hardwareembodiment, an entirely software embodiment or an embodiment combiningsoftware and hardware aspects. Furthermore, such aspects may take theform of a computer program product stored by one or morecomputer-readable storage media having computer-readable program code,or instructions, embodied in or on the storage media. Any suitablecomputer readable storage media may be utilized, including hard disks,CD-ROMs, optical storage devices, magnetic storage devices, and/or anycombination thereof. In addition, various signals representing data orevents as described herein may be transferred between a source and adestination in the form of electromagnetic waves traveling throughsignal-conducting media such as metal wires, optical fibers, and/orwireless transmission media (e.g., air and/or space).

FIG. 1 illustrates an example block diagram of a generic computingdevice 101 (e.g., a computer server 106 a) in an example computingenvironment 100 that may be used according to one or more illustrativeembodiments of the disclosure. According to one or more aspects, genericcomputing device 101 may be a server 106 a in a single-server ormulti-server desktop virtualization system configured to provide virtualmachines for client access devices. The generic computing device 101 mayhave a processor 103 for controlling overall operation of the server andits associated components, including random access memory (RAM) 105,read-only memory (ROM) 107, input/output (I/O) module 109, and memory115.

I/O module 109 may include a mouse, keypad, touch screen, scanner,optical reader, and/or stylus (or other input device(s)) through which auser of generic computing device 101 may provide input, and may alsoinclude one or more of a speaker for providing audio output and a videodisplay device for providing textual, audiovisual, and/or graphicaloutput. Software may be stored within memory 115 and/or other storage toprovide instructions to processor 103 for enabling generic computingdevice 101 to perform various functions. For example, memory 115 maystore software used by the generic computing device 101, such as anoperating system 117, application programs 119, and an associateddatabase 121. Alternatively, some or all of the computer executableinstructions for generic computing device 101 may be embodied inhardware or firmware (not shown).

The generic computing device 101 may operate in a networked environmentsupporting connections to one or more remote computers, such asterminals 140 (also referred to as client devices). The terminals 140may be personal computers or servers that include many or all of theelements described above with respect to the generic computing device101. The network connections depicted in FIG. 1 include a local areanetwork (LAN) 125 and a wide area network (WAN) 129, but may alsoinclude other networks. When used in a LAN networking environment, thegeneric computing device 101 may be connected to the LAN 125 through anetwork interface or adapter 123. When used in a WAN networkingenvironment, the generic computing device 101 may include a modem 127 orother network interface for establishing communications over the WAN129, such as computer network 130 (e.g., the Internet). It will beappreciated that the network connections shown are illustrative andother means of establishing a communications link between the computersmay be used.

Generic computing device 101 and/or terminals 140 may also be mobileterminals (e.g., mobile phones, smartphones, PDAs, notebooks, etc.)including various other components, such as a battery, speaker, andantennas (not shown).

The disclosure is operational with numerous other general purpose orspecial purpose computing system environments or configurations.Examples of well-known computing systems, environments, and/orconfigurations that may be suitable for use with the disclosure include,but are not limited to, personal computers, server computers, hand-heldor laptop devices, multiprocessor systems, microprocessor-based systems,set top boxes, programmable consumer electronics, network PCs,minicomputers, mainframe computers, distributed computing environmentsthat include any of the above systems or devices, and the like.

As shown in FIG. 1, one or more client devices 140 may be incommunication with one or more servers 106 a-106 n (generally referredto herein as “server(s) 106”). In some embodiments, the computingenvironment 100 may include an appliance installed between the server(s)106 and client machine(s) 140. The appliance can manage client/serverconnections, and in some cases can load balance client connectionsamongst a plurality of backend servers 106.

The client machine(s) 140 can in some embodiments be referred to as asingle client machine 140 or a single group of client machines 140,while server(s) 106 may be referred to as a single server 106 or asingle group of servers 106. In some embodiments a single client machine140 communicates with more than one server 106, while in otherembodiments a single server 106 communicates with more than one clientmachine 140. In yet other embodiments, a single client machine 140communicates with a single server 106.

A client machine 140 can, in some embodiments, be referenced by any oneof the following terms: client machine(s) 140; client(s); clientcomputer(s); client device(s); client computing device(s); localmachine; remote machine; client node(s); endpoint(s); endpoint node(s);or a second machine. The server 106, in some embodiments, may bereferenced by any one of the following terms: server(s), local machine;remote machine; server farm(s), host computing device(s), or a firstmachine(s).

In some embodiments, the client machine 140 may be a virtual machine.The virtual machine may be any virtual machine, while in someembodiments the virtual machine may be any virtual machine managed by ahypervisor developed by Citrix Systems, IBM, VMware, or any otherhypervisor. In some aspects, the virtual machine may be managed by ahypervisor, while in aspects the virtual machine may be managed by ahypervisor executing on a server 106 or a hypervisor executing on aclient 140.

The client machine 140 may execute, operate or otherwise provide anapplication that can be any one of the following: software; a program;executable instructions; a virtual machine; a hypervisor; a web browser;a web-based client; a client-server application; a thin-client computingclient; an ActiveX control; a Java applet; software related to voiceover internet protocol (VoIP) communications like a soft IP telephone;an application for streaming video and/or audio; an application forfacilitating real-time-data communications; a HTTP client; a FTP client;an Oscar client; a Telnet client; or any other set of executableinstructions. Still other embodiments include a client device 140 thatdisplays application output generated by an application remotelyexecuting on a server 106 or other remotely located machine. In theseembodiments, the client device 140 can display the application output inan application window, a browser, or other output window. In oneexample, the application is a desktop, while in other examples theapplication is an application that generates a desktop. A desktop mayinclude a graphical shell providing a user interface for an instance ofan operating system in which local and/or remote applications can beintegrated. Applications, as used herein, are programs that executeafter an instance of an operating system (and, optionally, also thedesktop) has been loaded.

The server 106, in some embodiments, executes a remote presentationclient or other client or program that uses a thin-client orremote-display protocol to capture display output generated by anapplication executing on a server 106 and transmits the applicationdisplay output to a remote client 140. The thin-client or remote-displayprotocol can be any one of the following protocols: the IndependentComputing Architecture (ICA) protocol manufactured by Citrix Systems,Inc. of Ft. Lauderdale, Fla.; or the Remote Desktop Protocol (RDP)manufactured by the Microsoft Corporation of Redmond, Wash.

The computing environment can include more than one server 106A-106Nsuch that the servers 106A-106N are logically grouped together into aserver farm 106. The server farm 106 can include servers 106 that aregeographically dispersed and logically grouped together in a server farm106, or servers 106 that are located proximate to each other andlogically grouped together in a server farm 106. Geographicallydispersed servers 106A-106N within a server farm 106 can, in someembodiments, communicate using a WAN, MAN, or LAN, where differentgeographic regions can be characterized as: different continents;different regions of a continent; different countries; different states;different cities; different campuses; different rooms; or anycombination of the preceding geographical locations. In some embodimentsthe server farm 106 may be administered as a single entity, while inother embodiments the server farm 106 can include multiple server farms106.

In some embodiments, a server farm 106 can include servers 106 thatexecute a substantially similar type of operating system platform (e.g.,WINDOWS NT, manufactured by Microsoft Corp. of Redmond, Wash., UNIX,LINUX, or SNOW LEOPARD.) In other embodiments, the server farm 106 caninclude a first group of servers 106 that execute a first type ofoperating system platform, and a second group of servers 106 thatexecute a second type of operating system platform. The server farm 106,in other embodiments, can include servers 106 that execute differenttypes of operating system platforms.

The server 106, in some embodiments, can be any server type. In otherembodiments, the server 106 can be any of the following server types: afile server; an application server; a web server; a proxy server; anappliance; a network appliance; a gateway; an application gateway; agateway server; a virtualization server; a deployment server; a SSL VPNserver; a firewall; a web server; an application server or as a masterapplication server; a server 106 executing an active directory; or aserver 106 executing an application acceleration program that providesfirewall functionality, application functionality, or load balancingfunctionality. In some embodiments, a server 106 may be a RADIUS serverthat includes a remote authentication dial-in user service. Inembodiments where the server 106 comprises an appliance, the server 106can be an appliance manufactured by any one of the followingmanufacturers: the Citrix Application Networking Group; Silver PeakSystems, Inc.; Riverbed Technology, Inc.; F5 Networks, Inc.; or JuniperNetworks, Inc. Some embodiments include a first server 106A thatreceives requests from a client machine 140, forwards the request to asecond server 106 n, and responds to the request generated by the clientmachine 140 with a response from the second server 106 n. The firstserver 106A can acquire an enumeration of applications available to theclient machine 140 and well as address information associated with anapplication server 106 hosting an application identified within theenumeration of applications. The first server 106A can then present aresponse to the client's request using a web interface, and communicatedirectly with the client 140 to provide the client 140 with access to anidentified application.

The server 106 can, in some embodiments, execute any one of thefollowing applications: a thin-client application using a thin-clientprotocol to transmit application display data to a client; a remotedisplay presentation application; any portion of the CITRIX ACCESS SUITEby Citrix Systems, Inc. like the METAFRAME or CITRIX PRESENTATIONSERVER; MICROSOFT WINDOWS Terminal Services manufactured by theMicrosoft Corporation; or an ICA client, developed by Citrix Systems,Inc. Another embodiment includes a server 106 that is an applicationserver such as: an email server that provides email services such asMICROSOFT EXCHANGE manufactured by the Microsoft Corporation; a web orInternet server; a desktop sharing server; a collaboration server; orany other type of application server. Still other embodiments include aserver 106 that executes any one of the following types of hostedservers applications: GOTOMEETING provided by Citrix Online Division,Inc.; WEBEX provided by WebEx, Inc. of Santa Clara, Calif.; or MicrosoftOffice LIVE MEETING provided by Microsoft Corporation.

Client machines 140 can, in some embodiments, be a client node thatseeks access to resources provided by a server 106. In otherembodiments, the server 106 may provide clients 140 or client nodes withaccess to hosted resources. The server 106, in some embodiments,functions as a master node such that it communicates with one or moreclients 140 or servers 106. In some embodiments, the master node canidentify and provide address information associated with a server 106hosting a requested application, to one or more clients 140 or servers106. In still other embodiments, the master node can be a server farm106, a client 140, a cluster of client nodes 140, or an appliance.

One or more clients 140 and/or one or more servers 106 can transmit dataover a network 130 installed between machines and appliances within thecomputing environment 100. The network 130 can comprise one or moresub-networks, and can be installed between any combination of theclients 140, servers 106, computing machines and appliances includedwithin the computing environment 100. In some embodiments, the network130 can be: a local-area network (LAN); a metropolitan area network(MAN); a wide area network (WAN); a primary network 104 comprised ofmultiple sub-networks located between the client machines 140 and theservers 106; a primary public network 130 (e.g., the Internet) with aprivate sub-network; a primary private network 130 with a publicsub-network; or a primary private network 130 with a privatesub-network. Still further embodiments include a network 130 that can beany of the following network types: a point to point network; abroadcast network; a telecommunications network; a data communicationnetwork; a computer network; an ATM (Asynchronous Transfer Mode)network; a SONET (Synchronous Optical Network) network; a SDH(Synchronous Digital Hierarchy) network; a wireless network; a wirelinenetwork; or a network that includes a wireless link where the wirelesslink can be an infrared channel or satellite band. The network topologyof the network 130 can differ within different embodiments, possiblenetwork topologies include: a bus network topology; a star networktopology; a ring network topology; a repeater-based network topology; ora tiered-star network topology. Additional embodiments may include anetwork of mobile telephone networks that use a protocol to communicateamong mobile devices, where the protocol can be any one of thefollowing: AMPS; TDMA; CDMA; GSM; GPRS UMTS; or any other protocol ableto transmit data among mobile devices.

Illustrated in FIG. 2 is an embodiment of a computing device 200, wherethe client machine 140 and server 106 illustrated in FIG. 1 may bedeployed as and/or executed on any embodiment of the computing device200 illustrated and described herein. Included within the computingdevice 200 is a system bus 250 that communicates with the followingcomponents: a central processing unit 221; a main memory 222; storagememory 228; an input/output (I/O) controller 223; display devices224A-224N; an installation device 216; and a network interface 218. Inone embodiment, the storage memory 228 includes: an operating system,software routines, and a client agent 220. The I/O controller 223, insome embodiments, is further connected to a keyboard 226, and a pointingdevice 227. Other embodiments may include an I/O controller 223connected to more than one input/output device 230A-230N.

FIG. 3 illustrates one embodiment of a computing device 300, where theclient machine 140 and server 106 illustrated in FIG. 1 can be deployedas and/or executed on any embodiment of the computing device 300illustrated and described herein. Included within the computing device300 is a system bus 350 that communicates with the following components:a bridge 370, and a first I/O device 330 a. In another embodiment, thebridge 370 is in further communication with the main central processingunit 321, where the central processing unit 321 can further communicatewith a second I/O device 330 b, a main memory 322, and a cache memory340. Included within the central processing unit 321, are I/O ports, amemory port 303, and a main processor.

Embodiments of the computing machine 300 can include a centralprocessing unit 321 characterized by any one of the following componentconfigurations: logic circuits that respond to and process instructionsfetched from the main memory unit 322; a microprocessor unit, such as:those manufactured by Intel Corporation; those manufactured by MotorolaCorporation; those manufactured by Transmeta Corporation of Santa Clara,Calif.; those manufactured by International Business Machines; aprocessor such as those manufactured by Advanced Micro Devices; or anyother combination of logic circuits. Still other embodiments of thecentral processing unit 321 may include any combination of thefollowing: a microprocessor, a microcontroller, a central processingunit with a single processing core, a central processing unit with twoprocessing cores, or a central processing unit with more than twoprocessing cores.

While FIG. 3 illustrates a computing device 300 that includes a singlecentral processing unit 321, in some embodiments the computing device300 can include one or more processing units 321. In these embodiments,the computing device 300 may store and execute firmware or otherexecutable instructions that, when executed, direct the one or moreprocessing units 321 to simultaneously execute instructions or tosimultaneously execute instructions on a single piece of data. In otherembodiments, the computing device 300 may store and execute firmware orother executable instructions that, when executed, direct the one ormore processing units to each execute a section of a group ofinstructions. For example, each processing unit 321 may be instructed toexecute a portion of a program or a particular module within a program.

In some embodiments, the processing unit 321 can include one or moreprocessing cores. For example, the processing unit 321 may have twocores, four cores, eight cores, etc. In some embodiments, the processingunit 321 may comprise one or more parallel processing cores. Theprocessing cores of the processing unit 321, may in some embodimentsaccess available memory as a global address space, or in otherembodiments, memory within the computing device 300 can be segmented andassigned to a particular core within the processing unit 321. In someembodiments, the one or more processing cores or processors in thecomputing device 300 can each access local memory. In still otherembodiments, memory within the computing device 300 can be sharedamongst one or more processors or processing cores, while other memorycan be accessed by particular processors or subsets of processors. Inembodiments where the computing device 300 includes more than oneprocessing unit, the multiple processing units can be included in asingle integrated circuit (IC). These multiple processors, in someembodiments, can be linked together by an internal high speed bus, whichmay be referred to as an element interconnect bus.

In embodiments where the computing device 300 includes one or moreprocessing units 321, or a processing unit 321 including one or moreprocessing cores, the processors can execute a single instructionsimultaneously on multiple pieces of data (SIMD), or in otherembodiments can execute multiple instructions simultaneously on multiplepieces of data (MIMD). In some embodiments, the computing device 100 caninclude any number of SIMD and MIMD processors.

The computing device 300, in some embodiments, can include a graphicsprocessor or a graphics processing unit (Not Shown). The graphicsprocessing unit can include any combination of software and hardware,and can further input graphics data and graphics instructions, render agraphic from the inputted data and instructions, and output the renderedgraphic. In some embodiments, the graphics processing unit can beincluded within the processing unit 321. In other embodiments, thecomputing device 300 can include one or more processing units 321, whereat least one processing unit 321 is dedicated to processing andrendering graphics.

One embodiment of the computing machine 300 includes a centralprocessing unit 321 that communicates with cache memory 340 via asecondary bus also known as a backside bus, while another embodiment ofthe computing machine 300 includes a central processing unit 321 thatcommunicates with cache memory via the system bus 350. The local systembus 350 can, in some embodiments, also be used by the central processingunit to communicate with more than one type of I/O device 330 a-330 n.In some embodiments, the local system bus 350 can be any one of thefollowing types of buses: a VESA VL bus; an ISA bus; an EISA bus; aMicroChannel Architecture (MCA) bus; a PCI bus; a PCI-X bus; aPCI-Express bus; or a NuBus. Other embodiments of the computing machine300 include an I/O device 330 a-330 n that includes a video display 224that communicates with the central processing unit 321. Still otherversions of the computing machine 300 include a processor 321 connectedto an I/O device 330 a-330 n via any one of the following connections:HyperTransport, Rapid I/O, or InfiniBand. Further embodiments of thecomputing machine 300 include a processor 321 that communicates with oneI/O device 330 a using a local interconnect bus and a second I/O device330 b using a direct connection.

The computing device 300, in some embodiments, includes a main memoryunit 322 and cache memory 340. The cache memory 340 can be any memorytype, and in some embodiments can be any one of the following types ofmemory: SRAM; BSRAM; or EDRAM. Other embodiments include cache memory340 and a main memory unit 322 that can be any one of the followingtypes of memory: Static random access memory (SRAM), Burst SRAM orSynchBurst SRAM (BSRAM); Dynamic random access memory (DRAM); Fast PageMode DRAM (FPM DRAM); Enhanced DRAM (EDRAM), Extended Data Output RAM(EDO RAM); Extended Data Output DRAM (EDO DRAM); Burst Extended DataOutput DRAM (BEDO DRAM); Enhanced DRAM (EDRAM); synchronous DRAM(SDRAM); JEDEC SRAM; PC100 SDRAM; Double Data Rate SDRAM (DDR SDRAM);Enhanced SDRAM (ESDRAM); SyncLink DRAM (SLDRAM); Direct Rambus DRAM(DRDRAM); Ferroelectric RAM (FRAM); or any other type of memory. Furtherembodiments include a central processing unit 321 that can access themain memory 322 via: a system bus 350; a memory port 303; or any otherconnection, bus or port that allows the processor 321 to access memory322.

One embodiment of the computing device 200/300 provides support for anyone of the following installation devices 216: a CD-ROM drive, a CD-R/RWdrive, a DVD-ROM drive, tape drives of various formats, USB device, abootable medium, a bootable CD, a bootable CD for GNU/Linux distributionsuch as KNOPPIX®, a hard-drive or any other device suitable forinstalling applications or software. Applications can in someembodiments include a client agent 220, or any portion of a client agent220. The computing device 200/300 may further include a storage device228 that can be either one or more hard disk drives, or one or moreredundant arrays of independent disks; where the storage device isconfigured to store an operating system, software, programsapplications, or at least a portion of the client agent 220. A furtherembodiment of the computing device 200, 300 includes an installationdevice 216 that is used as the storage device 228.

The computing device 200, 300 may further include a network interface218 to interface to a Local Area Network (LAN), Wide Area Network (WAN)or the Internet through a variety of connections including, but notlimited to, standard telephone lines, LAN or WAN links (e.g., 802.11,T1, T3, 56kb, X.25, SNA, DECNET), broadband connections (e.g., ISDN,Frame Relay, ATM, Gigabit Ethernet, Ethernet-over-SONET), wirelessconnections, or some combination of any or all of the above. Connectionscan also be established using a variety of communication protocols(e.g., TCP/IP, IPX, SPX, NetBIOS, Ethernet, ARCNET, SONET, SDH, FiberDistributed Data Interface (FDDI), RS232, RS485, IEEE 802.11, IEEE802.11a, IEEE 802.11b, IEEE 802.11g, CDMA, GSM, WiMax and directasynchronous connections). One version of the computing device 200, 300includes a network interface 218 able to communicate with additionalcomputing devices 200′, 300′ via any type and/or form of gateway ortunneling protocol such as Secure Socket Layer (SSL) or Transport LayerSecurity (TLS), or the Citrix Gateway Protocol manufactured by CitrixSystems, Inc. Versions of the network interface 218 can comprise any oneof: a built-in network adapter; a network interface card; a PCMCIAnetwork card; a card bus network adapter; a wireless network adapter; aUSB network adapter; a modem; or any other device suitable forinterfacing the computing device 200, 300 to a network capable ofcommunicating and performing the methods and systems described herein.

Embodiments of the computing device 200, 300 include any one of thefollowing I/O devices 230 a-230 n: a keyboard 226; a pointing device227; mice; trackpads; an optical pen; trackballs; microphones; drawingtablets; video displays; speakers; inkjet printers; laser printers; anddye-sublimation printers; or any other input/output device able toperform the methods and systems described herein. An I/O controller 223may in some embodiments connect to multiple I/O devices 230 a-230 n tocontrol the one or more I/O devices. Some embodiments of the I/O devices230 a-230 n may be configured to provide storage or an installationmedium 216, while others may provide a universal serial bus (USB)interface for receiving USB storage devices such as the USB Flash Driveline of devices manufactured by Twintech Industry, Inc. Still otherembodiments include an I/O device 230 that may be a bridge between thesystem bus 250 and an external communication bus, such as: a USB bus; anApple Desktop Bus; an RS-232 serial connection; a SCSI bus; a FireWirebus; a FireWire 800 bus; an Ethernet bus; an AppleTalk bus; a GigabitEthernet bus; an Asynchronous Transfer Mode bus; a HIPPI bus; a SuperHIPPI bus; a SerialPlus bus; a SCI/LAMP bus; a FibreChannel bus; or aSerial Attached small computer system interface bus.

In some embodiments, the computing machine 200, 300 can connect tomultiple display devices 224 a-224 n, in other embodiments the computingdevice 100 can connect to a single display device 224, while in stillother embodiments the computing device 200, 300 connects to displaydevices 224 a-224 n that are the same type or form of display, or todisplay devices that are different types or forms. Embodiments of thedisplay devices 224 a-224 n can be supported and enabled by thefollowing: one or multiple I/O devices 230 a-230 n; the I/O controller223; a combination of I/O device(s) 230 a-230 n and the I/O controller223; any combination of hardware and software able to support a displaydevice 224 a-224 n; any type and/or form of video adapter, video card,driver, and/or library to interface, communicate, connect or otherwiseuse the display devices 224 a-224 n. The computing device 200, 300 mayin some embodiments be configured to use one or multiple display devices224A-224N, these configurations include: having multiple connectors tointerface to multiple display devices 224A-224N; having multiple videoadapters, with each video adapter connected to one or more of thedisplay devices 224A-224N; having an operating system configured tosupport multiple displays 224A-224N; using circuits and softwareincluded within the computing device 200 to connect to and use multipledisplay devices 224A-224N; and executing software on the main computingdevice 200 and multiple secondary computing devices to enable the maincomputing device 200 to use a secondary computing device's display as adisplay device 224A-224N for the main computing device 200. Still otherembodiments of the computing device 200 may include multiple displaydevices 224A-224N provided by multiple secondary computing devices andconnected to the main computing device 200 via a network.

In some embodiments, the computing machine 200 can execute any operatingsystem, while in other embodiments the computing machine 200 can executeany of the following operating systems: versions of the MICROSOFTWINDOWS operating systems such as WINDOWS 3.x; WINDOWS 95; WINDOWS 98;WINDOWS 2000; WINDOWS NT 3.51; WINDOWS NT 4.0; WINDOWS CE; WINDOWS XP;WINDOWS VISTA; WINDOWS 7; and WINDOWS 8; the different releases of theUnix and Linux operating systems; any version of the MAC OS manufacturedby Apple Computer; OS/2, manufactured by International BusinessMachines; any embedded operating system; any real-time operating system;any open source operating system; any proprietary operating system; anyoperating systems for mobile computing devices; or any other operatingsystem. In still another embodiment, the computing machine 200 canexecute multiple operating systems. For example, the computing machine200 can execute PARALLELS or another virtualization platform that canexecute or manage a virtual machine executing a first operating system,while the computing machine 200 executes a second operating systemdifferent from the first operating system.

The computing machine 200 can be embodied in any one of the followingcomputing devices: a computing workstation; a desktop computer; a laptopor notebook computer; a server; a handheld computer; a mobile telephone;a portable telecommunication device; a media playing device; a gamingsystem; a mobile computing device; a netbook; a device of the IPODfamily of devices manufactured by Apple Computer; any one of thePLAYSTATION family of devices manufactured by the Sony Corporation; anyone of the Nintendo family of devices manufactured by Nintendo Co; anyone of the XBOX family of devices manufactured by the MicrosoftCorporation; or any other type and/or form of computing,telecommunications or media device that is capable of communication andthat has sufficient processor power and memory capacity to perform themethods and systems described herein. In other embodiments the computingmachine 100 can be a mobile device such as any one of the followingmobile devices: a JAVA-enabled cellular telephone or personal digitalassistant (PDA), such as the i55sr, i58sr, i85s, i88s, i90c, i95cl, orthe im1100, all of which are manufactured by Motorola Corp; the 6035 orthe 7135, manufactured by Kyocera; the i300 or i330, manufactured bySamsung Electronics Co., Ltd; the TREO 180, 270, 600, 650, 680, 700p,700w, or 750 smart phone manufactured by Palm, Inc; any computing devicethat has different processors, operating systems, and input devicesconsistent with the device; or any other mobile computing device capableof performing the methods and systems described herein. In still otherembodiments, the computing device 200 can be any one of the followingmobile computing devices: any one series of Blackberry, or otherhandheld device manufactured by Research In Motion Limited; the iPhonemanufactured by Apple Computer; Palm Pre; a Pocket PC; a Pocket PCPhone; or any other handheld mobile device.

In some embodiments, the computing device 200 may have differentprocessors, operating systems, and input devices consistent with thedevice. For example, in one embodiment, the computing device 200 is aTREO 180, 270, 600, 650, 680, 700p, 700w, or 750 smart phonemanufactured by Palm, Inc. In some of these embodiments, the TREO smartphone is operated under the control of the PalmOS operating system andincludes a stylus input device as well as a five-way navigator device.

In other embodiments the computing device 200 is a mobile device, suchas a JAVA-enabled cellular telephone or personal digital assistant(PDA), such as the i55sr, i58sr, i85s, i88s, i90c, i95cl, or the im1100,all of which are manufactured by Motorola Corp. of Schaumburg, Ill., the6035 or the 7135, manufactured by Kyocera of Kyoto, Japan, or the i300or i330, manufactured by Samsung Electronics Co., Ltd., of Seoul, Korea.In some embodiments, the computing device 200 is a mobile devicemanufactured by Nokia of Finland, or by Sony Ericsson MobileCommunications AB of Lund, Sweden.

In still other embodiments, the computing device 200 is a Blackberryhandheld or smart phone, such as the devices manufactured by Research InMotion Limited, including the Blackberry 7100 series, 8700 series, 7700series, 7200 series, the Blackberry 7520, or the Blackberry Pearl 8100.In yet other embodiments, the computing device 200 is a smart phone,Pocket PC, Pocket PC Phone, or other handheld mobile device supportingMicrosoft Windows Mobile Software. Moreover, the computing device 200can be any workstation, desktop computer, laptop or notebook computer,server, handheld computer, mobile telephone, any other computer, orother form of computing or telecommunications device that is capable ofcommunication and that has sufficient processor power and memorycapacity to perform the operations described herein.

In some embodiments, the computing device 200 is a digital audio player.In one of these embodiments, the computing device 200 is a digital audioplayer such as the Apple IPOD, IPOD Touch, IPOD NANO, and IPOD SHUFFLElines of devices, manufactured by Apple Computer of Cupertino, Calif. Inanother of these embodiments, the digital audio player may function asboth a portable media player and as a mass storage device. In otherembodiments, the computing device 200 is a digital audio player such asthe DigitalAudioPlayer Select MP3 players, manufactured by SamsungElectronics America, of Ridgefield Park, N.J., or the Motorola m500 orm25 Digital Audio Players, manufactured by Motorola Inc. of Schaumburg,Ill. In still other embodiments, the computing device 200 is a portablemedia player, such as the Zen Vision W, the Zen Vision series, the ZenPortable Media Center devices, or the Digital MP3 line of MP3 players,manufactured by Creative Technologies Ltd. In yet other embodiments, thecomputing device 200 is a portable media player or digital audio playersupporting file formats including, but not limited to, MP3, WAV,M4A/AAC, WMA Protected AAC, RIFF, Audible audiobook, Apple Losslessaudio file formats and .mov, .m4v, and .mp4 MPEG-4 (H.264/MPEG-4 AVC)video file formats.

In some embodiments, the computing device 200 comprises a combination ofdevices, such as a mobile phone combined with a digital audio player orportable media player. In one of these embodiments, the computing device200 is a Motorola RAZR or Motorola ROKR line of combination digitalaudio players and mobile phones. In another of these embodiments, thecomputing device 200 is an iPhone smartphone, manufactured by AppleComputer of Cupertino, Calif.

FIGS. 1-3 show a high-level architecture of an illustrative desktopvirtualization system. As shown, the desktop virtualization system maybe single-server or multi-server system, including at least onevirtualization server 106 configured to provide virtual desktops and/orvirtual applications to one or more client access devices 140. As usedherein, a desktop refers to a graphical environment or space in whichone or more applications may be hosted and/or executed. A desktop mayinclude a graphical shell providing a user interface for an instance ofan operating system in which local and/or remote applications can beintegrated. Applications, as used herein, are programs that executeafter an instance of an operating system (and, optionally, also thedesktop) has been loaded. Each instance of the operating system may bephysical (e.g., one operating system per device) or virtual (e.g., manyinstances of an OS running on a single device). Each application may beexecuted on a local device, or executed on a remotely located device(e.g., remoted). Reference to specific applications, products, and/orsystems in this disclosure is for illustrative purposes only, to assistin defining a type or genre that may be used instead of the specificallyidentified items, and is not meant to be limiting in any respect.

The systems and architectures described above with reference to FIGS.1-3, as well as other systems and architectures, may be used toimplement the functionality described below. In general, integrationbetween a social media application (having a plurality of social mediacommunities that group users by topics of interest, actions performed inapplications, user type, user skill level, etc.) and other applicationprograms may be provided. A user may be paired with one or more of thesocial media communities based on a variety of factors, includingapplications that the user uses, the user's type (e.g., end-user,administrator, etc.), the user's expertise level (e.g., beginner,advanced, etc.), and/or the type of activities that the user performs inone or more applications. The social media application may include adiscussion feed for users in the same community to interact (such as inreal-time) with one another and/or a suggestion pane used to provide, tothe user, suggestions for resources related to the user's social mediacommunities.

A user's activity in a variety of applications (e.g., enterpriseapplications, productivity applications, social media applications,content editing applications, etc.) may be monitored. In response todetecting that the user has performed a tracked action in the monitoredapplication, a computing device may perform a variety of steps. Adescription of the user's action may be posted in a discussion feed ofthe social media community. Recommendations for resources related to thedetected action may be provided to the user, such as in a suggestionwindow of the social media community. Suggestions may also be generatedbased on the user's posts in the discussion feed. In some aspects, theuser may be paired (or re-paired) with one or more social mediacommunities based on the user's actions.

FIG. 4 illustrates an example method of pairing a user with a socialmedia community in accordance with one or more illustrative aspectsdescribed herein. The steps illustrated may be performed by one or morecomputing device having processor(s) and/or memory. As previouslydescribed, the computing devices may be at the same location (e.g., in aclient device or in a server device) or distributed across multiplelocations (e.g., one computing device in a client and one computingdevice in a server). With this in mind and for the sake of brevity, thesteps illustrated in FIG. 4 will be described as being performed by acomputing device. In step 405, the user may log into a social mediaapplication account or directly into a social media community of thesocial media application. The user may input his or her username and/orpassword to a social media application. Upon authentication, the usermay be logged in. FIG. 10 illustrates an example graphical userinterface for initiating or logging in to a social media account and/orcommunity in accordance with one or more illustrative aspects describedherein. The social media application may include, for example, PODIO,FACEBOOK, TWITTER, or other social media applications. The social mediaapplication may be customized or otherwise configured to interact withother applications according to the various features described herein.In the example interface illustrated in FIG. 10, the user may log in tothe social media application or a specific community by clicking the“Join” button 1005. In some aspects, the social media application may beconfigured to execute in a virtual environment, such as XENCENTER,XENDESKTOP, XENAPP, etc. However, the aspects described herein are notlimited to virtual environments. The various applications describedherein (e.g., enterprise applications, social media applications,productivity applications, etc.) may be implemented on any number ofclient devices, server devices, across multiple devices in a network(e.g., in a cloud computing environment), etc.

Users in the same social media communities may interact with oneanother. Social media communities may include open communities, closedcommunities, and/or a combination thereof. Membership in closedcommunities may be restricted. For example, a closed community may becreated for a company, and the community may be restricted to employeesof the company. A closed community may also be created for smallergroups of individuals in the company, such as IT administrators at thecompany (e.g., XENDESKTOP administrators). Members of closed communitiesmay be restricted in who they may invite to join the community. Forexample, members of the Company A community may be able to inviteemployees and contractors of Company A to join the community, but notindividuals outside of Company A.

Membership in open communities may be less restrictive than in closedcommunities. In some embodiments, an open community may be public, andany individual (or group of individuals, such as a company) may be ableto join the community. For example, a PODIO community may be created,and any PODIO member may join the PODIO COMMUNITY. Open communities andclosed communities may limit membership based on applications used bymembers (e.g., enterprise applications, productivity applications,multimedia applications, simulation applications, engineeringapplications, etc.), activities performed in the applications (e.g.,configuring a network in XENSERVER, creating and/or publishing anapplication using XENAPP, creating a NIC bond in XENCENTER, creating a3D graph in a spreadsheet application, adjusting hue and saturation in aphoto editing application, etc.), characteristics of the user (e.g., theuser's technical experience), etc., as will be described in furtherdetail in the examples below.

In step 410, a computing device may generate and/or display a communitypairing welcome screen. The welcome screen may introduce users to thesocial media application, including the option to join one or moresocial media communities based on the characteristics of the user, theapplication(s) that the user uses, activities (e.g., tasks) that theuser performs in the applications, etc. FIG. 11 illustrates an examplecommunity pairing welcome screen. In some embodiments, users may berequired to rerun the community pairing wizard for each community thatthe user desires to join as illustrated in FIG. 11. In otherembodiments, the community pairing wizard may permit the user to joinmultiple communities without having to rerun the pairing wizard. As willbe described in further detail in the examples below, the user mayanswer a sequence of questions posed by the community pairing wizard andplaced in (or recommended) one or more communities based on the user'sanswers.

In step 415, the user may select the applications and/or type ofapplications that the user uses (e.g., is using, plans to user, and/ordesires assistance for). Example applications include, but are notlimited to, XENCENTER, XENDESKTOP, XENAPP, CITRIX RECEIVER, MICROSOFTWORD, APACHE OPENOFFICE, PHOTOSHOP, ROXIO CREATOR, INTERNET EXPLORER,GOOGLE CHROME, PEACHTREE ACCOUNTING, etc. The computing device mayselect (in step 450) a community for the user based on the applicationthat the user selects in step 415. The applications may also becategorized by type. For example, XENCENTER, XENDESKTOP, XENAPP, andCITRIX RECEIVER may be categorized as virtualization applications (orenterprise applications); MICROSOFT WORD and APACHE OPENOFFICE may becategorized as word processing applications; PHOTOSHOP and ROXIO CREATORmay be categorized as content editing applications; INTERNET EXPLORERand GOOGLE CHROME may be categorized as web browsers; and PEACHTREEACCOUNTING may be categorized as an accounting application. Thecomputing device may select (in step 450) a community for the user basedon the application type that the user selects in step 415. In someembodiments, the user may drill down from a higher level of generality(e.g., an application type) to a lower level of generality (e.g., aspecific application) to select the community to join. For example, agraphical user interface displaying types of applications that mayinteract with the social media application may be presented to the user(e.g., as a drop-down menu). After the user selects the applicationtype, a list of applications of the selected application type may bepresented to the user. For example, a list including PHOTOSHOP and ROXIOCREATOR may be displayed if the user selects a content editingapplication type.

In step 420, the user may select a user type and/or a user level (e.g.,technical expertise level). User types may include, for example, anend-user, a small business user, a reseller, a service provider, anadministrator, etc. of a particular application. User levels mayinclude, for example, beginner, intermediate, advanced, whether the userhas special training in a particular application or suite ofapplications (e.g., a Citrix Authorized Learning Center (CALC) forCITRIX products), etc. The computing device may select (in step 450) acommunity for the user based on the selected user type and/or the userlevel. For example, if the user selects small business user as the usertype, the computing device may pair the user with other small businessusers in the same community. If the user indicates that she is anadvanced user of an application, the computing device may select acommunity that includes other advanced users of the application.Alternatively, the computing device may attempt to balance the number ofbeginner, intermediate, and/or advanced users in the same community, sothat, for example, advanced users can help beginners. While user levelshave been described as beginner, intermediate, and advanced, users'abilities may be rated in other ways (e.g., on a 1-10 scale, with 10being the most advanced).

FIG. 12 illustrates an example graphical user interface for selecting auser type and/or level in accordance with one or more illustrativeaspects described herein. Options may include, for example, “A noviceXenServer user,” “A moderately experienced XenServer user,” “An advancedXenServer user,” “A Value Added Reseller or MSP,” “A CALC,” and thelike. In some embodiments, separate user interfaces may be displayed foruser type and level. For example, a user interface for user type (e.g.,end-user, small business user, etc.) may first be displayed. After theuser makes a user type selection, an interface for user level (e.g.,beginner, advanced, CALC, etc.) may be displayed.

In step 425, the user may select the types of activity (e.g., task) theuser performs (e.g., is performing, plans to perform, wants to learn howto perform, etc.). Activities may be performed within or using anapplication such as the application(s) selected in step 415. Forexample, the user may desire to administer a cloud network, administeran SAP farm, configure a network, troubleshoot problems with anapplication, create a NIC bond, create 3D graphs in a spreadsheetapplication, create an equation in a word processing application, adjustthe frame rate of videos in video editing software, adjustcharacteristics of a photograph (e.g., hue, saturation) in photo editingsoftware, perform an installation of applications, configure storage,create virtual machines, etc. These activities are merely examples, andnumerous other activities performed within or using applications exist.

In some aspects, activities may be assigned to specific applications.For example, the following activities may be assigned to a wordprocessing application: adjust font, create a table of contents, insertan equation, adjust the page layout, and adjust the margins of thedocument. After the user selects the word processing application (e.g.,in step 415), the types of activities that may be performed in theapplication may be displayed. A drop-down list, bullet list, a searchbox, or any other widget may be used to display the types of activitiesavailable for the application. For example, a drop-down list may listadjust font, create a table of contents, insert an equation, and adjustthe margins of the document for the word processing application. Thecomputing device may select (in step 450) a community for the user basedon the user's selected activity type. For example, if the user desiresto learn how to adjust the margins of a document, the user may be pairedwith a community of other users interested in adjusting margins ofdocuments.

In some aspects, users' actions in applications may be categorized intodifferent levels of generalization, and a series of displays may bepresented to the user allowing the user to drill down to a certain levelof specificity. For example, adjusting a page layout in a wordprocessing application may include adjusting the margins of a document.A first interface may display the activity of adjusting a page layout asone option. If the user selects that option, the next user interface maydisplay other activities associated with adjusting the page layout,including adjusting the margins of a document. Social media communitiesmay be created for each of the activities at any level of specificity.

FIGS. 13 and 14 illustrate example graphical user interfaces forselecting one or more activity types in accordance with one or moreillustrative aspects described herein. These figures provide an examplefor a XenServer application. In FIG. 13, the user may be presented withfour options for XenServer: “Installation,” “Configuring storage,”“Configuring networking,” and “Creating virtual machines.” The user mayselect the “Configuring networking” option and click “next.” In FIG. 14,five options for Configuring networking may be displayed, including“Planning a new environment,” “Converting to XenServer,” “Installing andConfiguring XenServer,” “Monitoring and maintaining XenServer,” and“Upgrading my environment to a new version of XenServer.” Additionallevels of activities may be displayed in subsequent user interfaces ifthey exist. In the present example of FIG. 14, the task of “Installingand Configuring XenServer” may be the lowest level for that branch, andthe computing device may pair the user with a community geared towardsinstalling and configuring XenServer after the user clicks next. Thecomputing device may cause the user to join the community, store thecommunity in the user's profile, provide a recommendation for the userto join the community, etc.

In step 430, the computing device may determine whether a community thatmatches the user's selections in steps 415, 420, and/or 425 alreadyexists. Each community may have associated tags (or other metadata)identifying the intended application, application type, user type, userlevel, and/or type of activity for the community. Table 1 below presentsan example table of tags for three different communities:

TABLE 1 Application Activity Community Type Application User Type UserLevel Type Community 1 Virtualization XenServer Small BeginnerInstalling and business user Configuring XenServer Community 2Enterprise XenCenter IT CALC NIC bond administrator Community 3Productivity Word End-user Intermediate Page layout Processor

If, in steps 415, 420, and 425, the user selects “Virtualization” as theapplication type, “XenServer” as the application, “Small business user”as the user type, “Beginner” as the user level, and “Installing andConfiguring XenServer” as the activity type, the computing device maydetermine, in step 430, that Community 1 (which may already exist)exactly matches the user's selections. In step 450, the computing devicemay cause the user to join Community 1 based on the determination instep 430. The computing device may generate and/or display arecommendation for the user to join Community 1, log the user intoCommunity 1, and/or store an identifier for Community 1 in the user'sprofile (e.g., for the user to log into in the future). FIG. 15illustrates an example graphical user interface that may be displayedafter the user joins a community (e.g., the XenServer NetworkConfiguration Community). The display may indicate the name of thecommunity (e.g., “XenServer Network Configuration community”), include adescription of the community (e.g., “This community will let youexchange ideas with other XenServer administrators . . . ”), and/ordescribe functionalities available to the user in the community (e.g.,configure automatic alerts, generate suggestions, post status ofactivities, etc.).

If a social media community that matches the user's selections does notexist (step 430: N), the computing device may determine whether tocreate a new community in step 435. The user may be presented the optionto create a new community that exactly matches the user's selections orto join an existing a community that might not exactly match the user'sselections. FIG. 16 illustrates an example graphical user interface thatmay be displayed if the user (or an administrator) desires to create anew community. Alternatively, whether to create a new community may bebased on a number of previous requests for the community or a number ofusers desiring to use the same application/application type, desiring toperform the same type of activity, and/or of the same user type/level.For example, if a number of users (e.g., 10 users) have indicatedinterest in the past for a community of XenCenter end-users, and thecurrent user has indicated the same interest, the computing device maycreate the community based on a determination that the number of usersdesiring the community has reached (or exceeded) a predetermined level(e.g., 11 users).

In step 440, the computing device may create the new community based onthe user's selections in steps 415, 420, and/or 425. For example,Community 1 with the associated tags illustrated in Table 1 may becreated if it does not already exist. If the user does not desire tocreate a new community, the computing device, in step 445, may attemptto find the next best community based on the user's selections in steps415, 420, and/or 425. For example, if, in steps 415, 420, and 425, theuser selects “Productivity” as the application type, “Word Processor” asthe application, “End-user” as the user type, “Beginner” as the userlevel, and “Page margins” as the activity type, the computing device maydetermine, in step 445, that Community 3 (which may already exist) isthe best match for the user's selections because three out of the fivetags (application type, application, and user type) match. In otherwords, the selection in step 445 may be based on the number of matchingcategories.

Additionally or alternatively, the computing device may select the nextbest community from existing communities by generalizing one or more ofthe user's selections. For example, assume that the user selects “Pagemargins” as the activity and that the “Page margins” activity is onelevel below the “Page layout” activity. If a community with “Pagelayout” as the activity exists (e.g., Community 3), the computing devicemay select, in step 445, the community having “Page layout” for theactivity as the next best community for the user. The computing devicemay prioritize one or more of the categories over one or more othercategories. For example, pairing the user with a community that matchesthe user's application type and/or application selections may be moreimportant than pairing the user with a community that matches the user'suser type and/or user level selections. Therefore, the user may beplaced in a first community if only the application category selected bythe user matches the application category of the first community, evenif both the user type and user level categories selected by the usermatches the user type and user level of a second community differentfrom the first community.

In step 455, the computing device may determine whether to add the userto another community. The user may be presented with an option to addanother community after the user has joined a first community (e.g., instep 450). If so, the process may return to step 415 to place the userin another community. If not, the community pairing wizard mayterminate. In some aspects, data on users' selections (e.g., in steps415, 420, and/or 425) may be collected, and reports summarizing the mostcommonly requested communities, application types, applications, usertypes, user levels, activity types, etc., may be generated.

FIG. 5 illustrates an example method of monitoring a user's applicationactivity in accordance with one or more illustrative aspects describedherein. Users may choose whether to have monitoring clients track theiractivity and/or to otherwise make social media aware of theirapplication activity. In step 505, the computing device may determinewhether activity monitoring has been enabled.

In step 510, the computing device may identify the applications tomonitor. The user may select which applications to monitor by enablingmonitoring for some applications while disabling monitoring for others.Alternatively, the applications currently active (e.g., running) at theuser's terminal (or an external terminal in a virtualization ordistributed computing environment) may be monitored. For example, if theuser is currently running a Word Processor application, the user'sactivities performed within or using the Word Processor application maybe monitored. Additionally or alternatively, applications associatedwith communities that the user has joined may be monitored. For example,if the user has joined Community 1, applications associated withCommunity 1 may be monitored (e.g., XenServer, which is associated withCommunity 1, as illustrated in Table 1 above).

In step 515, one or more monitoring clients (e.g., social mediamonitoring clients) may be initiated for the applications identified instep 510. In some aspects, a single monitoring client may be used tomonitor user activity across a plurality of applications. The monitoringclient may receive user activity data via APIs for each of the monitoredapplications. Alternatively, each application may have its ownmonitoring client. In some aspects, the monitoring client may comprise aplug-in, applet, or extension to the application. Alternatively, theapplication itself may include a built-in monitoring client formonitoring user activity. Each monitoring client may communicate with acentral manager such as by using the corresponding application's APIs.The central manager may coordinate multiple monitoring clients formultiple applications and also receive event logs from each monitoringclient. The central manager may be a software component (or plug-in) ofthe social media application.

After the monitoring client(s) have been initiated/activated, a user'sactivity within the monitored application may be tracked. FIG. 17illustrates an example of a monitoring client (e.g., social media client(SMC)) configured to monitor user activity in the XenServer applicationin accordance with one or more illustrative aspects described herein.Each user action that the monitoring client tracks may have acorresponding identifier (e.g., a dialog or control ID). For example, inXenServer, a “Networking” tab (e.g., used to configure network settingsfor XenServer) may have the corresponding identifier “TabPageNetwork.”When the user selects the “Networking” tab in XenServer, the monitoringclient may detect that the tracked event of tabbing to the Networkingtab has occurred (e.g., step 520: Y) and retrieve the correspondingidentifier, “TabPageNetwork.” FIG. 18 illustrates an example of themonitoring client detecting that the user has selected the “Networking”tab in XenServer and the monitoring client (SMC) finding thecorresponding identifier for the action. The monitoring client my writethe detected event and/or corresponding identifier to an event log. Themonitoring client may also write the time that the user action occurred(e.g., 6:15:17 PM) and/or the duration of the action (e.g., 40 secondsspent in the “Networking” tab) to the event log. Table 2 belowillustrates examples of IDs assigned to user activities performed in theXenServer application. Table 2 also identifies communities and keywordscorresponding to user actions, which will be described in further detailin the examples below.

TABLE 2 User Action Identifier Community Keywords User selects aTabPageNetwork XenServer Networking Networking, NIC, “Networking” tabCommunity (Private: network, in XenServer community populated managementbased on user ID of user interface, bond, currently logged into teamingXenCenter) User selects a NewVMWizard_Storage XenServer Storage Storage,NFS, SAN, “Storage” tab in Pane Community (Private: HBA, SR, StorageXenServer ABC Company storage Repository engineers) User selects anRollingUpgradeWizard XenServer Upgrade to XenServer 6.2, option toupgrade 6.2 Community upgrade, installation XenServer

In step 525, the monitoring client may send the ID, time of action,duration of action, and/or user identifier (e.g., username) to thecentral manager, which as previously discussed, may be responsible forcoordinating the monitoring of several applications. In some aspects,the monitoring client may send the information in an event log which maybe used to record user activities in the application. The centralmanager may also request user activity information from the application,such as via an API plug-in and/or by trolling event or data log filesfor each monitored application.

In step 530, the central manager may retrieve a data mapping table (alsoreferred to as a dictionary, such as a context dictionary) thatcorrelates an activity ID to the corresponding user action, one or moresocial media communities, and/or to one or more keywords, as illustratedin Table 2. Each application may have its own data mapping table. Adifferent mapping table may be used for each user because the mappingtable may be partially based on which communities each user has joined.Table 2 comprises an example of part of a data mapping table forXenServer. Additionally or alternatively, a monitoring client for aparticular application may retrieve the data mapping table in step 530.The data mapping table may be used for various purposes, includingdisplaying the user's actions in step 535 (FIG. 6), generatingsuggestions for resources for the user based on the user's activity instep 540 (FIG. 7), and/or pairing or re-pairing the user with one ormore social media communities based on the user's activity in step 545(FIG. 9), as will be described in further detail in the examples below.

FIG. 6 illustrates an example method of generating textual descriptionsof user actions in accordance with one or more illustrative aspectsdescribed herein. In step 605, a computing device may determine, for adetected user action, the user that performed the action, theapplication that the action took place in and/or that was used toperform the action, the time that the action occurred (or duration ofthe action), and/or any other information associated with the detectedaction. As previously noted, this information may have been recorded inan event log of an application.

In step 610, the computing device may generate a description (e.g., atextual and/or graphical description) of the detected user action basedon the information from step 605. For example, the computing device mayuse the keywords corresponding to the detected action stored in themapping table (Table 2) to generate the description. FIG. 19 illustratesan example of generating a textual description of user activity orgenerating a search (as will be described in further detail in theexamples below) based on user activity in accordance with one or moreillustrative aspects described herein. In the illustrated example, amonitoring client, such as the SMC, and/or a central manager mayretrieve keywords associated with the detected activity to generate thedescription. Table 3 illustrates examples of generated textualdescriptions.

TABLE 3 1 Frank just created a bond on NICs 1 and 2. 2 Frnk1234 isconfiguring a network using XenCenter (6:05:15 PM). Any pointers? 3Frank created a 3D graph in the Spreadsheet Application at 11:17 AM PST.Does anyone need help creating a 3D graph?

Example textual description 1 in Table 3 includes the user's name(“Frank”), the time the action took place (“just”), the user actiontaken (“created a bond on NICs 1 and 2”). The terms used for the useraction taken may be retrieved from the data mapping table. For exampleand with reference to Table 2 above, the computing device may use thekeywords “NIC” and “bond” from the keywords associated with the actionof the user selecting a “Networking” tab (or creating a NIC bond) and togenerate the textual description.

Example textual description 2 in Table 3 includes the user's username(“Frnk1234”), the time the action took place (“(6:05:15 PM)”), the useraction taken (“configuring a network”), and the application used toperform the action (“XenCenter”). The textual description of the user'saction may be taken from the mapping table. For example, the mappingtable may associate the keywords “configuring” and “network” or thephrase “configuring a network” with the user action. Textual description2 may also include supplemental text, such as a question (“Anypointers?”). The computing device may generate (or retrieve) such aquestion if the user is determined to be currently performing the actionor if the user is detected to have started performing the actionrecently (e.g., within a predetermined time period, such as 10 seconds,from the current time). By including this supplemental phrase, thecomputing device may solicit, for the user, help from other members ofthe same social media community. The supplemental text/questions mayalso be listed in the data mapping table (e.g., Table 2).

Example textual description 3 in Table 3 includes the user's name(“Frank”), the time the action took place (“11:17 AM PST”), the useraction taken (“created a 3D graph”), the application used to perform theaction (“Spreadsheet Application”), and a supplemental question (“Doesanyone need help creating a 3D graph?”). By including this supplementalquestion and based on a determination that the user successfully createda 3D graph in the Spreadsheet Application, the computing device mayoffer the user's assistance to other members of the same social mediacommunity to create a 3D graph.

In step 615, the description generated in step 610 may be displayed in adiscussion feed window of one or more of the user's social mediacommunities. The data mapping table may identify which social mediacommunities to post the description. With reference to Table 2, if thedetected action is that the user selected a “Networking” tab inXenServer, the posting may be made to the discussion feed of theXenServer Networking Community, which is identified in Table 2 ascorresponding to the activity. If the detected action is that the userhas selected an option to upgrade XenServer, the posting may be made tothe discussion feed for the XenServer Upgrade to 6.2 Community. If morethan one community is associated with the detected user action, thedescription may be posted to each of those communities or a subset ofthose communities. FIG. 20 illustrates an example graphical userinterface of a discussion feed in a social media community in accordancewith one or more illustrative aspects described herein. The textualdescription of user activity 2005 may be posted in the discussion feed,such as the discussion feed window of a particular PODIO community.Other types of feeds (e.g., a web feed, such as an RSS feed) may be usedto publish the description of the activity. Other external social mediaprograms, such as FACEBOOK, may also be used to publish user activities.

In step 615, additional information, such as links, may be posted withthe textual description. FIG. 21 illustrates an example graphical userinterface for displaying links in a discussion feed in accordance withone or more illustrative aspects described herein. The discussion feedmay display a link 2105 used to request an online meeting, such as a webconference, with the user (e.g., a GoToMeeting, GoToWebinar,GoToTraining, GoToAssist, GoToMyPC, HiDef Corporate, etc.). By clickingon the link, an online conference room including web tools, audiofunctionalities, and/or video functionalities may be created to enableusers in the social media community to meet online, discuss how toperform an activity identified in the post, etc. For example and asillustrated in FIG. 21, Frank may post a question “do you want me tohelp you configure a bond correctly?” with a link to join and/or requestthe creation of a web conference for Frank to help other users in thesocial media community configure NIC bonds in XenServer.

The discussion feed may display a link 2110 that enables users in thecommunity to share and/or synchronize documents over a network (e.g.,via ShareFile, StorageZones, cloud storage services, etc.). By clickingon the link, multiple users in the social media community may accessand/or modify the same documents. For example and as illustrated in FIG.21, Bob may post the advice “Here are some great VM templates” with alink to access the VM templates. Other types of links may be includedwith the discussion feed post. For example, a link to send a privatemessage to the user may be included with the post. This may enable usersto discuss topics one-on-one. Comments responding to discussion feedposts may also be displayed.

An example of detecting that a user is creating a Network Interface Card(NIC) bond between NICs 1 and 2 and publishing the activity to adiscussion feed of a social media community will be described withreference to FIGS. 22-25. FIG. 22 illustrates an example graphical userinterface 2205 for creating a NIC bond. As illustrated, the user mayhave created a NIC bond between NIC 1 and NIC 2.

FIG. 23 illustrates an example event or data log for the creation of aNIC bond. A monitoring client for the XenServer application may havedetected, in step 520 of FIG. 5, that the user created a NIC bondbetween NIC 1 and NIC 2 and created the corresponding event log in FIG.23. The event log may identify the action taken by the user 2310 (e.g.,“Bond 1+2 created”), the amount of time it took the user to complete theaction 2315 (e.g., “00:00:15”), the date and/or time that the userinitiated or completed the action 2320 (e.g., “May 11, 2012 11:13:17AM”), and other information (e.g., application name, username, etc.).The monitoring client may transmit this information to a central managerin step 525 of FIG. 5.

A computing device may generate a textual description of the actionperformed by Frank and display the description in a discussion feedwindow of a Community associated with the user and/or action (e.g.,“Frank just created a bond on NICs 1 and 2.”), as illustrated in FIG. 24(reference 2405). As previously discussed, various links (e.g., anonline meeting link, a private message link, etc.) may be postedautomatically or on demand next to the textual description.

By publishing user activity, many benefits may be achieved. Other usersin the social media community may help the user perform tasks. The usermay help other users in the community perform tasks. Users maycollaborate on tasks. Users in the same community may also analyzeand/or verify other users' activities (e.g., community auditing). Usersmay raise flags if another user has done something wrong. For example,if too many NIC bonds exist in a network, and Frank creates another NICbond between NICs 1 and 2, other users may post messages in thediscussion feed (or directly message Frank), to remove the bond.

FIG. 7 illustrates an example method of searching resources forinformation based on user activity in an application in accordance withone or more illustrative aspects described herein. Resources may berelated to an activity the user is performing or has performed and/orthe social media community that the user is part of Resource suggestionsmay be enabled or disabled in the social media application or community.For example, FIG. 25 illustrates an example graphical user interface fordisplaying a discussion feed and/or suggestions in a community. A usermay enable suggestions by checking the “Enable suggestions” box 2505.

With reference to FIG. 7, in step 705, a computing device may identifykeywords associated with the user action. The computing device may use adata mapping table storing the detected user action to identify thecorresponding keywords. For example and with reference to Table 2 above,the user action may be a selection of an option to upgrade XenServer.The computing device may determine, in step 705 and based on the datamapping table, that the keywords “XenServer 6.2,” “upgrade,” and“installation” correspond to the detected user activity. As anotherexample, the keywords “Storage,” “NFS,” “SAN,” “HBA,” “SR,” and “StorageRepository” may correspond to the action of the user selecting a“Storage” tab in XenServer (Table 2).

In step 710, the computing device may identify resources to search basedon the user's activity. Resources may include general network-based(e.g., Internet) resources, including information from search engines(e.g., GOOGLE search, BING search, YAHOO search, blogs, etc.). Resourcesmay also include information unique to each application or suite ofapplications. For example, a database of “help” information tailored tothe XenServer application may exist. The XenServer help information mayalso be available at a software developer's or service provider'swebsite (e.g., CITRIX.com for XenServer documentation). Resourcesavailable at these websites may also include knowledge bases (KBs),product documentation for applications (e.g., CITRIX eDocs), productforums that users and administrators may use, and any other resourcesavailable for the application.

In step 715, the computing device may generate searches for informationrelated to the application and/or detected user activity using theresources identified in step 710. In some aspects, the computing devicemay generate search terms or strings based on the keywords associatedwith the detected action. For example, if a monitoring client determinesthat a user has selected an option to upgrade XenServer, the computingdevice may use the terms “XenServer 6.2,” “upgrade,” “installation,” ora combination thereof to generate search terms or strings for theidentified resources (see Table 2).

The application and/or user action may also have one or morecorresponding indexed resources. FIG. 26 illustrates an example indexedresource for the virtualization applications XenServer, XenApp, andXenDesktop in accordance with one or more illustrative aspects describedherein. If the user performs a general action in XenServer, thecomputing device may generate a search for resources in the “XenServer”database 2605. For example, the computing device may create a searchstring to search the “XenServer” database 2605. Alternatively (and aswill be discussed in further detail below), a link to the XenServerdatabase 2605 may be displayed in the suggestions pane. If the userperforms an action related to installing and configuring XenServer, thecomputing device may generate a search for resources in the “Installingand Configuring XenServer” database 2610, which may be indexed at alower level than the “XenServer” database 2605. For example, thecomputing device may create a search string to search the “Installingand Configuring XenServer” database 2610. Instead of generating a searchstring (and as will be discussed in further detail below), a link to the“Installing and Configuring XenServer” database 2605 may be displayed inthe suggestions pane.

In step 720, results from the search(es) performed in step 715 may bedisplayed in the social media community, such as within the discussionfeed or in a suggestions pane. FIG. 25 illustrates example searchresults 2515, including a result from CITRIX eDocs, a result from CITRIXForums, and other results. The search results may be selectable by theuser and lead the user to the identified resource (e.g., a website, ahelp page, an indexed listing of topics, etc.).

In some embodiments, the user might not immediately be provided withsearch results upon detecting the user action. For example, a computingdevice may generate and/or display search results to the user based on adetermination that the user has spent a predetermined amount of time ina particular topic area. If the user has navigated to a “Networking” tabin XenServer, and has remained in the tab for more than a predeterminedtime period of 30 seconds, a computing device may perform one or more ofthe steps illustrated in FIG. 7 to provide search results related to the“Networking” tab in XenServer. On the other hand, if the user has onlyspent 25 seconds in the “Networking” tab, search results might not beprovided to the user. Searches may also be generated and/or displayed tothe user based on the frequency with which the user performs aparticular action. In other words, the search results might not beprovided after the user performs the action the first time, but might beprovided only after the user performs the action more than apredetermined number of times (e.g., 2 times, 5 times, etc.). Forexample, if the user has navigated to the “Networking” tab once, asearch for resources might not be performed. However, the search mightbe performed (and results displayed) after the user navigates to the“Networking” tab a second time. The active application (e.g., XenServer)or the social media application (e.g., PODIO) may include a manualsearch functionality that allows the user to perform searches forresources. Results from these searches may be displayed in thesuggestions pane.

FIG. 8 illustrates an example method of searching resources forinformation based on user discussion posts in accordance with one ormore illustrative aspects described herein. Users in social mediacommunities may enter posts into discussion feeds. For example, FIG. 25illustrates an example post 2510 entered by a user (“Plug the cables into the cables into the NICs bef . . . ”). In step 805, a computingdevice may determine whether the user has posted something in thediscussion pane of the social media community.

If a user has posted in the discussion pane (step 805: Y), the computingdevice, in step 810, may identify keywords and/or corresponding useractions from the post. In particular, the computing device may determinewhether any of the terms used in the post match keywords in one or moredata mapping tables for various software applications. Once matchingkeywords are found, the computing device may correlate the keywords withone or more user actions. For example, in the post illustrated in FIG.25 (“Plug the cables in to the cables into the NICs bef . . . ”), thecomputing device may determine that the phrase “NICs” is included in adata mapping table for the XenServer application, as illustrated inTable 2 above. In particular, the computing device may determine thatthe user is interested in performing an action in the “Networking” tabin XenServer, which corresponds to the keyword “NIC” included in Table2.

In step 815, the computing device may identify resources to search. Step815 may substantially correspond to step 710 previously described. Instep 820, the computing device may generate searches in the one or moreresources identified in step 815. Step 820 may substantially correspondto step 715 previously described. For example, the computing device maygenerate search strings using keywords associated with the user activityand/or locate an indexed reference, such as an indexed help page,associated with the activity or application. In step 825, the results ofthe searches performed in step 820 may be displayed in a window of thesocial media community, such as in the discussion feed or a suggestionspane. Step 825 may substantially correspond to step 720 previouslydescribed.

FIG. 9 illustrates an example method of pairing a user with a socialmedia community based on user activity in accordance with one or moreillustrative aspects described herein. In particular, the user may bepaired (or re-paired) with one or more social media communities afterthe user performs a monitored action. The steps illustrated in FIG. 9may be performed in response to detecting that a user has performed aparticular action having a corresponding ID, as was previously describedwith respect to FIG. 5.

In step 905, a computing device may identify one or more communitiesthat correspond to the activity ID detected by the monitoring client.The correspondence between user actions and communities may be stored ina data mapping table. With reference to Table 2 above, assume that themonitoring client detected that the user selected a “Storage” tab inXenServer, which has a corresponding ID of “NewVMWizard_StoragePane.” Instep 905, the computing device may determine that the “XenServer StorageCommunity” corresponds to the detected ID.

In step 910, the computing device may determine whether the user hasjoined the community identified in step 905. If the user has not joinedthe identified community, the computing device, in step 915, may displayan option for the user to join the identified community. For example, alink to join the identified community along with a prompt, such as “Youmay be interested in joining the XenServer Storage Community,” may bedisplayed to the user. In step 920, the computing device may determinewhether the user has selected the option to join the identifiedcommunity. If so, the computing device, in step 925, may pair the userwith the identified community (e.g., the XenServer Storage Community).In some embodiments, steps 915 and/or 920 may be optional, and thecomputing device might automatically pair the user with the identifiedcommunity (instead of asking the user if the user is interested injoining the community).

In some embodiments, if no communities have been associated with thedetected user action, the computing device may create a new communityfor the user action substantially similar to the creation described withrespect to step 440 and/or place the user in the next best communitydescribed with respect to step 445.

In the example steps described with respect to FIGS. 4 and 9, the usermay be paired (or re-paired) based on a community pairing wizard (e.g.,FIG. 4) and/or based on the user's actions in monitored applications(e.g., FIG. 9). For example, the user may initially join a first socialmedia community based on various selections made by the user in thecommunity pairing wizard (FIG. 4). Subsequently, the user may perform anaction in an application monitored by a monitoring client. In responseto detecting the action, the social media application may cause the userto join a second social media community that corresponds to the detectedaction. The second social media community may be different from thefirst social media community. The social media application may cause theuser to become members of both the first and second communities (e.g.,maintain the user in the first social media community while the userjoins the second social media community). Alternatively, the applicationmay cause the user to leave the first social media community byswitching the user from the first social media community to the secondmedia community in response to detecting the user activity. The user maybe paired and/or re-paired with different communities any number oftimes in accordance with the concepts described herein.

In some embodiments, the user might not immediately be paired with a newsocial media community after detecting the action by the user. Forexample, the user may be paired with a new community based on adetermination that the user has spent a predetermined amount of time ina particular topic area. If, for example, the user has navigated to a“Networking” tab in XenServer, and has remained in the tab for more thana predetermined time period (e.g., 30 seconds), a computing device mayperform one or more of the steps illustrated in FIG. 9 to pair the userwith a community related to the “Networking” tab in XenServer (e.g., theXenServer Networking Community). On the other hand, the user might notbe re-paired if the user only spends 25 seconds in the “Networking” tab.The user may also be paired based on the frequency with which the userperforms a particular action. In other words, the pairing might not beperformed after the user performs the action the first time, but theuser might only be paired after the user performs the action more than apredetermined number of times (e.g., 2 times, 5 times, etc.). Forexample, if the user has navigated to the “Networking” tab once, theuser might not be paired with a new community. However, the user mightbe paired with the new community after the user navigates to the“Networking” tab a second time. The active application (e.g., XenServer)or the social media application (e.g., PODIO) may include a manualsearch functionality that allows the user to perform various searchesfor resources and other documentation. Based on these searches (e.g.,the text or other keywords used in the search), the user may be pairedwith a community corresponding to one or more keywords used in thesearch (e.g., based on a data mapping table, such as Table 2).

Although example embodiments are described above, the various featuresand steps may be combined, divided, omitted, and/or augmented in anydesired manner, and other steps may be added, depending on the specificrecommendation process desired. The scope of this patent should only bedefined by the claims that follow.

What is claimed is:
 1. A method of pairing a user to a social mediacommunity, comprising: initiating a monitoring client to monitor useractivity in an application; detecting, by the monitoring client, a useraction taken in the application; determining, by a computing device, afirst social media community corresponding to the detected user action,wherein the first social media community is classified among a pluralityof social media communities; and pairing the user with the first socialmedia community corresponding to the detected user action.
 2. The methodof claim 1, wherein: detecting the user action comprises determining thepresence of an identifier assigned to the user action, and determiningthe first social media community comprises comparing the identifier to adata mapping table for the application, wherein the data mapping tableis configured to correlate the identifier with the user action.
 3. Themethod of claim 1, wherein the monitoring client comprises a plug-in tothe application.
 4. The method of claim 1, wherein determining the firstsocial media community comprises: determining that the first socialmedia community does not exist; and creating the first social mediacommunity in response to determining that the first social mediacommunity does not exist, wherein pairing the user with the first socialmedia community comprises pairing the user with the created first socialmedia community.
 5. The method of claim 1, wherein pairing the user withthe first social media community comprises: switching the user from asecond social media community to the first social media community,wherein the second social media community is different from the firstsocial media community.
 6. The method of claim 5, wherein prior topairing the user with the first social media community, the methodfurther comprises: generating a plurality of community pairing displaywindows configured to navigate the user to join at least one of theplurality of social media communities; receiving at least one selectionof an application, application type, user type, user level, and activitytype desired by the user; determining the second social media communitybased on the at least one selection; and pairing the user with thesecond social media community.
 7. The method of claim 6, furthercomprising: creating the second social media community in response todetermining that the second social media community does not exist,wherein pairing the user with the second social media communitycomprises pairing the user with the created second social mediacommunity.
 8. The method of claim 6, wherein receiving the at least oneselection comprises receiving at least two selections of an application,application type, user type, user level, and activity type, the methodfurther comprising: in response to determining that the second socialmedia community does not exist, pairing the user with a third socialmedia community based on at least one of the selections matching thethird social media community and at least one of the selections notmatching the third social media community.
 9. The method of claim 1,wherein the user is paired with a second social media communitydifferent from the first social media community, the method furthercomprising: maintaining the user's pairing with the second social mediacommunity while pairing the user with the first social media community.10. One or more non-transitory computer-readable media storingcomputer-readable instructions that, when executed by a computingdevice, configure the computing device to: initiate a monitoring clientto monitor user activity in an application; detect, by the monitoringclient, a user action taken in the application; determine a first socialmedia community corresponding to the detected user action, wherein thefirst social media community is classified among a plurality of socialmedia communities; and pair the user with the first social mediacommunity corresponding to the detected user action.
 11. The one or morenon-transitory computer-readable media of claim 10, wherein determiningthe first social media community comprises: determining that the firstsocial media community does not exist; and creating the first socialmedia community in response to determining that the first social mediacommunity does not exist, wherein pairing the user with the first socialmedia community comprises pairing the user with the created first socialmedia community.
 12. The one or more non-transitory computer-readablemedia of claim 10, wherein pairing the user with the first social mediacommunity comprises: switching the user from a second social mediacommunity to the first social media community, wherein the second socialmedia community is different from the first social media community. 13.The one or more non-transitory computer-readable media of claim 12,wherein prior to pairing the user with the first social media community,the one or more non-transitory computer-readable media store additionalcomputer-readable instructions that, when executed by the computingdevice, configure the computing device to: generate a plurality ofcommunity pairing display windows configured to navigate the user tojoin at least one of the plurality of social media communities; receiveat least one selection of an application, application type, user type,user level, and activity type desired by the user; determine the secondsocial media community based on the at least one selection; and pair theuser with the second social media community.
 14. The one or morenon-transitory computer-readable media of claim 13 storing additionalcomputer-readable instructions that, when executed by the computingdevice, configure the computing device to: create the second socialmedia community in response to determining that the second social mediacommunity does not exist, wherein pairing the user with the secondsocial media community comprises pairing the user with the createdsecond social media community.
 15. The one or more non-transitorycomputer-readable media of claim 13, wherein receiving the at least oneselection comprises receiving at least two selections of an application,application type, user type, user level, and activity type, the one ormore non-transitory computer-readable media storing additionalcomputer-readable instructions that, when executed by the computingdevice, configure the computing device to: in response to determiningthat the second social media community does not exist, pair the userwith a third social media community based on at least one of theselections matching the third social media community and at least one ofthe selections not matching the third social media community.
 16. Theone or more non-transitory computer-readable media of claim 10, whereinthe user is paired with a second social media community different fromthe first social media community, the one or more non-transitorycomputer-readable media storing additional computer-readableinstructions that, when executed by the computing device, configure thecomputing device to: maintain the user's pairing with the second socialmedia community while pairing the user with the first social mediacommunity.
 17. The one or more non-transitory computer-readable media ofclaim 10, wherein the monitoring client comprises a plug-in to theapplication.
 18. A device comprising: a processor; and memory storingcomputer-readable instructions that, when executed by the processor,cause the device to: initiate a monitoring client to monitor useractivity in an application; detect, by the monitoring client, a useraction taken in the application; determine a first social mediacommunity corresponding to the detected user action, wherein the firstsocial media community is classified among a plurality of social mediacommunities; and pair the user with the first social media communitycorresponding to the detected user action.
 19. The device of claim 18,wherein: detecting the user action comprises determining the presence ofan identifier assigned to the user action, and determining the firstsocial media community comprises comparing the identifier to a datamapping table for the application, wherein the data mapping table isconfigured to correlate the identifier with the user action.
 20. Thedevice of claim 18, wherein the monitoring client comprises a plug-in tothe application.